关于equals和"=="

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:47:33
大家都知道,对于对象来说..equals()对比的是对象的内容..而"=="对比的是对象的引用,这个一般为false..我就试了一下.下面是我的代码..两个源文件

Value.java:

public class Value {
int v;
}

Equals_Demo.java:
package equals;

public class Equals_Demo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1 = new Integer(56);
Integer i2 = new Integer(56);

System.out.println("i1 == i2:" +'\t'+ (i1 == i2));

//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));

//比较对象的内容
i1=44;i2=44;
System.out.println("当i1=44,i2=44后");
System.out.println("i1 == i2:" +'\t'+ (i1 == i2));

//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));

//比较对象的内容
System.out.prin

Integer 如果小于128 则比的是值

如果大于等于128 则比的是引用。

public static void main(String atgs[]){

Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a ==b);
System.out.println(c ==d);
}

你运行下就知道了。

----------------------

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。
当equals为true时,==不一定为true;

equals 比较的是两个值的内容。
== 比较的是两个值的内存地址。

你可以查看JDK原文件,你会发现在Object类中,==和equals是一样的,其子类重写了equals方法,才有了差别,具体您可以看源文件,就在JAVA安装路径的src.zip文件里面